package com.example;

import com.example.config.ThreadPoolConfig;
import com.example.service.TaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        logger.info("程序开始启动...");

        // 初始化 Spring 注解配置的 IOC 容器（加载 ThreadPoolConfig）
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(ThreadPoolConfig.class);

        // 从容器中获取 TaskService（此时已被正确扫描和管理）
        TaskService taskService = context.getBean(TaskService.class);

        // 提交任务
        taskService.startPrintTimeTask(10); // 每秒输出时间，持续 10 秒
        taskService.startCountdownTask(60); // 60 秒倒计时

        // 等待任务执行（示例：等待 65 秒确保任务完成）
        try {
            Thread.sleep(65000);
        } catch (InterruptedException e) {
            logger.error("主线程被中断", e);
            Thread.currentThread().interrupt();
        }

        // 关闭线程池和 Spring 容器
        taskService.shutdownThreadPool();
        context.close();

        logger.info("程序执行完毕");
    }
}